package com.medusa.aps.business.model.enums;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.EnumValue;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;

@Getter
@Schema(description = "齐套状态")
public enum NestingStatusEnum {
    /**
     * 齐套
     */
    @Schema(description = "齐套")
    KITTING(1, "齐套"),
    /**
     * 缺料
     */
    @Schema(description = "缺料")
    INCOMPLETE(2, "缺料");

    @EnumValue
    private final Integer code;

    /**
     * -- GETTER --
     * 获取描述信息
     */
    @JSONField(value = true)
    private final String value;

    NestingStatusEnum(Integer code, String value) {
        this.code = code;
        this.value = value;
    }


    /**
     * 根据编码返回对应的ManufacturingStrategyEnum
     * 如果不存在对应的ManufacturingStrategyEnum，则返回null
     *
     * @param code 编码
     * @return ManufacturingStrategyEnum
     */
    public static NestingStatusEnum getEnumExampleByCode(Integer code) {
        //遍历当前的枚举类
        for (NestingStatusEnum enumExample : NestingStatusEnum.values()) {
            if (enumExample.getCode().equals(code)) {
                return enumExample;
            }
        }
        return null;
    }

    /**
     * 根据描述信息返回对应的ManufacturingStrategyEnum
     * 如果不存在对应的ManufacturingStrategyEnum，则返回null
     *
     * @param value 描述信息
     * @return ManufacturingStrategyEnum
     */
    public static NestingStatusEnum getEnumExampleByValue(String value) {
        //遍历当前的枚举类
        for (NestingStatusEnum enumExample : NestingStatusEnum.values()) {
            if (value.equals(enumExample.getValue())) {
                return enumExample;
            }
        }
        return null;
    }

    /**
     * 根据编码返回对应的ManufacturingStrategyEnum的描述信息
     * 如果不存在对应的ManufacturingStrategyEnum，则返回null
     *
     * @param code 编码
     * @return 描述信息
     */
    public static String getValueByCode(Integer code) {
        NestingStatusEnum enumExample = getEnumExampleByCode(code);
        if (enumExample != null) {
            return enumExample.getValue();
        } else {
            return null;
        }
    }

    /**
     * 根据描述信息返回对应的ManufacturingStrategyEnum的编码
     * 如果不存在对应的ManufacturingStrategyEnum，则返回null
     *
     * @param value 描述信息
     * @return 编码
     */
    public static Integer getCodeByValue(String value) {
        NestingStatusEnum enumExample = getEnumExampleByValue(value);
        if (enumExample != null) {
            return enumExample.getCode();
        } else {
            return null;
        }
    }
}
